¿Qué es una distribución de probabilidad?

El concepto de distribución de probabilidad es fundamental. Describe cómo se reparte la probabilidad de una variable aleatoria.

Le damos el nombre variable aleatoria a una cantidad que toma distintos valores cada vez que lo medimos. (El nombre no es bueno.) Ciertos valores pueden ser más probables y otros menos probables.

Lanzar un dado

Como primer ejemplo, pensemos en un dado. Cuando lanzamos un dado, puede caer en uno de los lados $1$ a $6$. Si el dado no tiene sesgo, esperamos que caerá con "igual probabilidad" $\frac{1}{6}$ en cada lado. Pero, ¿qué queremos decir con esta aseveración?

En una interpretación "frecuentista" de la probabilidad, nos referimos a que si lanzamos el dado un número muy grande $N$ de veces, caerá en cada lado $N/6$ veces. [Otra interpretación, más favorecida hoy día, es la Bayesiana.]

La colección de todas las probabilidades de todos los valores posibles de la variable aleatoria $X$, "el valor que arroja el dado", se llama la distribución de probabilidad de $X$. Escribimos $P(X=1) = \frac{1}{6}$, etc.

Si las probabilidades son iguales, decimos que la distribución es uniforme. Pero si realmente hacemos el experimento, ¿qué tan uniformes salen las frecuencias?

Ejercicio 1:

(a) Genera un número aleatorio uniforme entero entre 1 y 6 con

rand(1:6)

[Checa cuál es el tipo del objeto 1:6.]

(b) ¿Cómo se pueden generar $N$ tales números? Haz una función para hacerlo.

(c) Cuenta el número de veces que dio $1$, $2$, $\ldots$, $6$ y así calcula las frecuencias al normalizarlos con el número total.

(d) Dibuja el resultado. ¿Qué observas? Hazlo varias veces con el mismo valor de $N$.

(e) Repite el cálculo con números $N$ mayores. ¿Qué observas?

(f) Calcula para cada $N$ cuánto desvía el valor observado del valor teórico esperado. Dibuja esto en función de $N$. ¿Cómo se comporta esta desviación?

Este resultado se puede entender al hacer un cálculo analítico, como sigue.


In [1]:
rand(1:6)


Out[1]:
4

In [2]:
function f(N)
    x=[]
    for i in 1:N
        push!(x,rand(1:6))
    end
    return x
end


Out[2]:
f (generic function with 1 method)

In [6]:
N=zeros(6);

In [2]:
@which rand()


Out[2]:
rand()

In [ ]:


In [9]:
for i in f(50)
    for j in 1:6
        if i==j
            N[i]+=1
        end
    end
end

In [12]:
frecuencias=N/sum(N)


Out[12]:
6-element Array{Float64,1}:
 0.18
 0.18
 0.22
 0.18
 0.08
 0.16

In [1]:
using PyPlot


WARNING: deprecated syntax "[a=>b, ...]" at /home/hector/.julia/v0.4/IJulia/src/inline.jl:23.
Use "Dict(a=>b, ...)" instead.

In [43]:
function d(n)
    x=[]
    for i in 1:n
        push!(x,rand(1:6))
    end
    N=zeros(6)
    for i in x
    for j in 1:6
        if i==j
            N[i]+=1
        end
    end
end
    frecuencias=N/sum(N)
    desviacion=[abs(i-1/6) for i in frecuencias]
    return maximum(desviacion)
end


Out[43]:
d (generic function with 1 method)

In [50]:
y=[d(i) for i in 1:1000];

In [52]:
plot(1:1000,y)


Out[52]:
1-element Array{Any,1}:
 PyObject <matplotlib.lines.Line2D object at 0x537af10>

Ejercicio 2:

(a) Pensemos sólo en el lado $1$. Sea $p := \frac{1}{6}$ la probabilidad de que caiga en este lado. Si lanzamos 2 veces, ¿cuál es la probabilidad de que salgan (i) cero veces $1$; (ii) una vez $1$; (iii) dos veces $1$?

(b) Si lanzamos 3 veces, ¿cuáles son las probabilidades de que salga cada número posible de $1$s entre 0 y 3?

(c) Si lanzamos N veces, ¿cuáles son las probabilidades?

(d) ¿Cuál es el valor promedio que sale? ¿Qué otra cantidad podríamos querer calcular?

Respuestas

  • (a) (i) $P(x_1\neq 1| x_2\neq 1)=P(x_1\neq 1)P(x_2\neq 1)=\left(\frac{5}{6}\right)^2=\frac{25}{36}$.

    (ii) $P(x_1=1|x_2\neq 1)=P(x_1=1)P(x_2\neq 1)=\frac{1}{6}\frac{5}{6}=\frac{5}{36}$.

    (iii) $P(x_1=1|x_2=1)=P(x_1= 1)P(x_2= 1)=\frac{1}{6}\frac{1}{6}=\frac{1}{36}$.

  • (b) y (c) La solución es análoga al inciso anterior ya que son experimentos independientes.

Aquí, estamos hablando de otra variable aleatoria, el número de veces $Y_N$ que sale un $1$ en $N$ intentos. Por lo tanto, también podemos hablar de la distribución de probabilidad de $Y_N$, que una vez más es la colección de todas las probabilidades de todos los valores posibles de $Y_N$, que son $0$, $\ldots$, $N$.

Investiguemos esta distribución. Para hacerlo, generalicemos a una secuencia de ensayos de Bernoulli: es una secuencia de eventos independientes, con probabilidad $p$ de éxito en cada evento.

Ejercicio 3:

(a) Escribe una función que lleva a cabo $N$ ensayos de Bernoulli con probabilidad $p$ y calcula la proporción que fueron exitosos.

(b) Utiliza tu función para estimar numéricamente la distribución de probabilidad de $Y_{N,p}$.

(c) Dibújalo y compáralo con el analítico.

(d) ¿Qué pasa cuando $N$ es grande y $p$ es chico -- cómo se ve la distribución? ¿Esto se puede entender analíticamente?


In [2]:
function ber(N,p)
    x=[]
    for i in 1:N
        if rand()<=p
            push!(x,1)
        else
            push!(x,0)
        end
    end
    return x
end


Out[2]:
ber (generic function with 1 method)

In [3]:
function prop(N,p)
    proporcion=sum(ber(N,p))/length(ber(N,p))
end


Out[3]:
prop (generic function with 1 method)

In [9]:
y=[prop(20,0.5) for i in 1:10000];

La distribución de probabilidad de $Y_{N,p}$ se llama una distribución binomial. Se dice que es una distribución de probabilidad discreta, ya que los valores que toma son valores discretos.

La notación que se utiliza es

$$X \sim B(N,p)$$

para decir que $X$ es una variable aleatoria con distribución de probabilidad binomial con parámetros $N$ y $p$.


In [10]:
plt.hist(y)


Out[10]:
([12,187,368,1946,1590,3431,1911,351,191,13],[0.1,0.18,0.26,0.33999999999999997,0.42000000000000004,0.5,0.58,0.66,0.74,0.82,0.9],Any[PyObject <matplotlib.patches.Rectangle object at 0xbfd5ad0>,PyObject <matplotlib.patches.Rectangle object at 0xbfd5c10>,PyObject <matplotlib.patches.Rectangle object at 0xbfdb0d0>,PyObject <matplotlib.patches.Rectangle object at 0xbfdb550>,PyObject <matplotlib.patches.Rectangle object at 0xbfdb9d0>,PyObject <matplotlib.patches.Rectangle object at 0xbfdbe50>,PyObject <matplotlib.patches.Rectangle object at 0xbfde310>,PyObject <matplotlib.patches.Rectangle object at 0xbfde790>,PyObject <matplotlib.patches.Rectangle object at 0xbfdec10>,PyObject <matplotlib.patches.Rectangle object at 0xd5100d0>])

In [ ]: